package com.airlines.crewassignment.service.ruleverification;

import java.util.Date;
import java.util.List;

import org.joda.time.DateTime;

import com.airlines.crewassignment.domain.CrewLinkLineRoster;
import com.airlines.crewassignment.domain.CrewPositionAssignment;
import com.airlines.crewassignment.domain.Position;
import com.airlines.crewassignment.domain.rule.AssignmentRule;
import com.airlines.crewassignment.entity.ruleverification.RuleVerification;

/**
 * @author xxxx
 * @date 2018年7月23日 
 * @description 排班硬规则规则检查
 */
public interface RuleHardCheckService {

	/**
	 * 飞行员硬规则检查
	 * @param flightDate
	 * @return
	 */
	List<RuleVerification> ruleHardCheckF(DateTime flightDateStart,DateTime flightDateEnd, CrewLinkLineRoster crewLinkLineRoster);

	/**
	 * 从解决方案中获取规则
	 * @param crewLinkLineRoster
	 * @param ruleCode
	 * @return
	 */
	AssignmentRule getAssignmentRule(CrewLinkLineRoster crewLinkLineRoster, String ruleCode);

	
	/**
	 * 得分构造
	 * @param p
	 * @param resultFlag
	 * @param remark
	 * @param ruleCode
	 * @param ruleScore
	 * @return
	 */
	RuleVerification getRuleVerification(Position p, boolean resultFlag, String remark, String ruleCode,
			Integer ruleScore);

	/**
	 * 从解决方案中获取某个号位飞行员的所有的连线
	 * @param crewLinkLineRoster
	 * @param p
	 * @return
	 */
	List<CrewPositionAssignment> getCpaListForCrew(CrewLinkLineRoster crewLinkLineRoster, Position p);
	
}
